#ifndef LEG_H
#define LEG_H

//Our includes
class Station;
class LegData;

/*!
  \class Leg

  The Leg class connects stations together.  A Leg is directional connection
  in a graph.  A Leg has a To and From station.

  The connecting From station to the To station is specified by
  sub-classing Leg.  The subclasses of Legs need to populate
  Leg::Data.  See LegData for details.

  */


class Leg {
public:
    //Constructor
    Leg();

    //Destructor
    virtual ~Leg();

    //Set and get the to station
    Station* GetTo();
    void SetTo(Station* to);

    //Set and get the from station
    Station* GetFrom();
    void SetFrom(Station* from);

    //!Get normalized data between two To and From stations
    std::vector<const LegData*> GetData() { return Data; }

    //Checks to see if this Leg is valid
    bool IsValid();

protected:
    Station* To;
    Station* From;

    //!A List of normalized data between the stations
    std::vector<const LegData*> Data;

};

#endif // LEG_H
